import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase Pez: Es el jugador, contiene los metodos para que 
 * el jugfador pueda moverse por la pantalla con las teclas, 
 * verifica si encontro algun pez comida e incrementa el contador, 
 * checa si choco con algun enemigo y le resta vida, y manda llamar 
 * a BalaPlancton cuando se presiona la tecla de Espacio.
 * 
 * @author Vianey Ortiz
 * @version 02/12/2012
 */
public class Pez extends Actor
{
    private BalaPlancton planc;

    /**
     * Se encarga de mover al pez por la pantalla
     * verifica si se comio algun pecesito comida y verifica si hay enemigos
     * para poder lanzar BalaPlancton.
     */
    public void act() 
    {
        WorldFish mundo;
        mundo=(WorldFish)super.getWorld();
        muevePez(25);
        checaPececitoCome();
        if(((mundo.getObjects(Tiburon.class)).toArray()).length!=0||((mundo.getObjects(Pulpo.class)).toArray()).length!=0||((mundo.getObjects(Anzuelo.class)).toArray()).length!=0||((mundo.getObjects(Ballena.class)).toArray()).length!=0)
        {
            checaEnemigo();
        }
        if(((mundo.getObjects(Tiburon.class)).toArray()).length!=0&&Greenfoot.isKeyDown("space"))
        {            
            planc=new BalaPlancton();
            mundo.addObject(planc,getX(),getY());   
        }
        else if(((mundo.getObjects(Pulpo.class)).toArray()).length!=0&&Greenfoot.isKeyDown("space"))
        {
            planc=new BalaPlancton();
            mundo.addObject(planc,getX(),getY());
        }
    }
    
    /**
     * Checa hacia donde se debe de mover El Jugador 
     * Mediante las flechas del teclado.
     */
    public void muevePez(int mov)
    {
        if(Greenfoot.isKeyDown("left"))
        {
            setLocation(getX()-mov,getY());
        }
        else if(Greenfoot.isKeyDown("right"))
        {
            setLocation(getX()+mov,getY());
        }
        else if(Greenfoot.isKeyDown("down"))
        {
            setLocation(getX(),getY()+mov);
        }
        else if(Greenfoot.isKeyDown("up"))
        {
            setLocation(getX(),getY()-mov);
        }
        else if(Greenfoot.isKeyDown("Q"))
        {
            setLocation(getX()-mov,getY()-mov);
        }
        else if(Greenfoot.isKeyDown("w"))
        {
            setLocation(getX()+mov,getY()-mov);
        }
        else if(Greenfoot.isKeyDown("a"))
        {
            setLocation(getX()-mov,getY()+mov);
        }
        else if(Greenfoot.isKeyDown("s"))
        {
            setLocation(getX()+mov,getY()+mov);
        }
    }
    
    /**
     * Checa si encontro un pececito y se lo come 
     * Verifica si ya se comio los necesarios para 
     * cambiar de nivel, incrementa el contador
     * y manda llamar a la funcion para checar si ya es cambio de nivel.
     */
    public void checaPececitoCome()
    {
        int cont;
        Contador contador;
        Actor pecesito;
        pecesito= super.getOneObjectAtOffset(0,0,Comida.class);     
        if(pecesito != null)
        {
            WorldFish mundo;
            mundo=(WorldFish)super.getWorld();
            mundo.removeObject(pecesito);
            contador = mundo.regresaContador();
            cont = contador.incrementa(); 
            mundo.checaNivel(cont);
        }
    }
    
    /**
     * Checa si colisiono con algun Enemigo
     * y resta una vida
     */
    public void checaEnemigo()
    {
        int cont;
        Contador contador;
        Letrero mnsj;
        Actor enemi;
        Pez pez;
        enemi=super.getOneObjectAtOffset(0,0,Enemigo.class);
        if(enemi!=null)
        {
            WorldFish mundo;
            mundo=(WorldFish)super.getWorld();
            contador = mundo.regresaVidas();
            cont = contador.decrementa(); 
            this.setLocation(700,400);
            if(cont == 0 )
            {
                Greenfoot.stop();
                mnsj = new Letrero(" P E R D I S T E ");
                mundo.addObject(mnsj,250,100);
                mundo.menu();
            }
        }         
    }
}

